// pages/register/register.js

const config = require('../../config');
const app = getApp();
//校验密码函数
function validatePassword(password) {
  // 密码长度至少为8个字符
  if (password.length < 8) {
    return "密码长度至少为8个字符";
  }
  
  // 至少包含一个大写字母
  if (!/[A-Z]/.test(password)) {
    return "密码至少包含一个大写字母";
  }
  
  // 至少包含一个小写字母
  if (!/[a-z]/.test(password)) {
    return "密码至少包含一个小写字母";
  }
  
  // 至少包含一个数字
  if (!/[0-9]/.test(password)) {
    return "密码至少包含一个数字";
  }
  
  // 至少包含一个特殊字符
  if (!/[^A-Za-z0-9]/.test(password)) {
    return "密码至少包含一个特殊字符";
  }
  
  // 避免常见弱密码
  const commonPasswords = ["123456", "password", "admin", "root"]; // 这里可以扩展更多常见弱密码
  if (commonPasswords.includes(password.toLowerCase())) {
    return "密码太常见，请选择更安全的密码";
  }
  
  // 避免密码猜解
  for (let i = 0; i < password.length - 2; i++) {
    if (password[i] === password[i + 1] && password[i] === password[i + 2]) {
      return "密码不能有连续的三个相同字符";
    }
  }
  
  // 如果所有检查都通过，则密码有效
  return 1;
}
Page({

  /**
   * 页面的初始数据
   */
  data: {
    roles: [{
        value: '1',
        name: '老师'
      },
      {
        value: '2',
        name: '学生'
      },
      {
        value: '3',
        name: '教研室'
      },
      {
        value: '4',
        name: '社团'
      },
    ],
    // 默认头像
    imageList: "/image/create_img/picture.jpg",
  },

  /**
   * 角色选择
   */
  radioChange(e) {
    console.log(e.detail.value);
    this.setData({
      role: e.detail.value
    })
  },
  //输入内容
  inputNum(e) {
    console.log(e.detail.value);
    this.setData({
      userId: e.detail.value
    })
  },
  inputName(e) {
    console.log(e.detail.value);
    this.setData({
      username: e.detail.value
    })
  },
  inputPassword(e) {
    console.log(e.detail.value);
    
   var s = validatePassword(e.detail.value);
   console.log(s);
    if(s === 1){
      this.setData({
        password: e.detail.value
      })
    }
   if(s !== 1){
     wx.showToast({
       title: s,
     })
   }
  },
  inputMajor(e) {
    console.log(e.detail.value);
    this.setData({
      major: e.detail.value
    })
  },
  inputDepartment(e) {
    console.log(e.detail.value);
    this.setData({
      department: e.detail.value
    })
  },

  //点击照片上传图片
  uploadImage: function () {
    var that = this;
    wx.chooseImage({
      count: 2,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: function (res) {
        const tempFilePaths = res.tempFilePaths
        console.log(res);
        app.globalData.tempFilePaths = tempFilePaths
        console.log(tempFilePaths);
        that.setData({
          imageList: res.tempFilePaths,
          tempFilePaths: res.tempFilePaths
        })
        wx.uploadFile({
          url: "http://127.0.0.1:8080/common/upload", //url就是Java后台的上传图片接口，实际可以更改为自己服务器的地址。
          filePath: tempFilePaths[0],
          name: 'file', //需要传给后台的图片字段名称
          // formData: {//需要传给后台的其他表单数据
          //   'pdNo':that.data.pdNo
          // },
          header: {
            "Content-Type": "multipart/form-data", //form-data格式
            // 'Accept': 'application/json', 
          },
          success: function (res) {
            console.log(res.data)
            const result = res.data

            //将结果转为json对象
            var json = JSON.parse(result);
            console.log(json);

            if (json.code == 0) {
              wx.showToast({
                title: '上传失败！',
                duration: 2000
              })
            } else {
              var date = new Date();
              that.setData({
                avator: result + "?t=" + date, //如果不加后缀的话第一次上传过图片之后再次上传的图片不显示，虽然图片链接已经改变，显示的仍是第一次的图片
                //设置图片名字
                imageName: json.data
              })


              wx.showToast({
                title: '上传成功！',
                duration: 2000
              })
            }
          },
          complete: function (res) {
            console.log(res);
          }
        })

      }
    })
  },

  submit(){
    wx.request({
      url: config.baseUri+ '/user/register', //后端服务器url
      method: "POST",
      data: {
        id:this.data.userId,
        name:this.data.username,
        password:this.data.password,
        major:this.data.major,
        department:this.data.department,
        headImg: this.data.imageName,
        userType:this.data.role
      },
      success: (res) => {
        //如果后端返回的code为0，则表示发布失败
        if (res.data.code == 0) {
          wx.showToast({
            title: res.data.msg,
            icon: "none",
          })
        } else {
          wx.showToast({
            title: '注册成功，请等待审核',
            icon: "none",
            success: function () {
              setTimeout(function () {
                wx.switchTab({
                  url: '../login/login'
                })
              }, 150);
            }
          })
        }
      },
      fail:(err)=>{

      }

    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})